grammar PL;
@header {
  import helpers.Fun;
}

start : e=expr {System.out.println("Ans:" + $e.value);};

expr returns [Integer value]
@init {
  $value = null;
}
  : NUM { $value = Integer.parseInt($NUM.text); }
  | '(' f=fun (e=expr {$value = Fun.eval($f.funcode, $value, $e.value);})* ')'
  ;

fun returns [int funcode]
  : PLUS {$funcode = 1;}
  | SUB  {$funcode = 2;}
  | MULT {$funcode = 3;}
  | DIV  {$funcode = 4;}
  ;


PLUS : 'add'  | '+';
SUB  : 'sub'  | '-';
MULT : 'mult' | '*';
DIV  : 'div'  | '/';
NUM  : ('0' .. '9')+;
WS : (' ' | '\t' | '\n') {this.skip();} ;